package auth

import (
	"douhu_backend/internal/dao"
	"douhu_backend/internal/services/common"
	"regexp"
)

// ServiceManager 服务管理器接口（避免循环依赖）
type ServiceManager interface {
	GetDAOManager() *dao.Manager      // 返回 *dao.Manager
	GetJWT() common.JWTService        // 返回 JWT 服务
	GetSMS() common.SMSService        // 返回 SMS 服务
}

// Service 认证服务
type Service struct {
	manager ServiceManager // 服务管理器，用于调用其他服务和 DAO
}

// NewService 创建认证服务实例
func NewService(manager ServiceManager) *Service {
	return &Service{
		manager: manager,
	}
}

// DAO 获取 DAO 管理器
func (s *Service) DAO() *dao.Manager {
	return s.manager.GetDAOManager()
}

// JWT 获取 JWT 服务
func (s *Service) JWT() common.JWTService {
	return s.manager.GetJWT()
}

// SMS 获取短信服务
func (s *Service) SMS() common.SMSService {
	return s.manager.GetSMS()
}

// validatePhone 验证手机号格式（中国大陆手机号）
func (s *Service) validatePhone(phone string) bool {
	phoneRegex := regexp.MustCompile(`^1[3-9]\d{9}$`)
	return phoneRegex.MatchString(phone)
}
